﻿/* T4 Version = 1.0 */
using System;
using System.Reflection;

/* T4 Version = 1.0 */
namespace NearAop
{
    public class MethodArgs<T1, T2>
               : MethodArgs<T1>
    {
        protected T2 t2;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2 };

        protected override object GetIndexValue(int index)
        {
            return 1 == index ? t2 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (1 == index)
            {
                t2 = (T2)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2)
        { this.t1 = t1; this.t2 = t2; }

        public void OutValue(out T1 t1, out T2 t2)
        { t1 = this.t1; t2 = this.t2; }
    }
    public class MethodArgs<T1, T2, T3>
               : MethodArgs<T1, T2>
    {
        protected T3 t3;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3 };

        protected override object GetIndexValue(int index)
        {
            return 2 == index ? t3 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (2 == index)
            {
                t3 = (T3)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; }
    }
    public class MethodArgs<T1, T2, T3, T4>
               : MethodArgs<T1, T2, T3>
    {
        protected T4 t4;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4 };

        protected override object GetIndexValue(int index)
        {
            return 3 == index ? t4 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (3 == index)
            {
                t4 = (T4)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5>
               : MethodArgs<T1, T2, T3, T4>
    {
        protected T5 t5;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5 };

        protected override object GetIndexValue(int index)
        {
            return 4 == index ? t5 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (4 == index)
            {
                t5 = (T5)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6>
               : MethodArgs<T1, T2, T3, T4, T5>
    {
        protected T6 t6;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6 };

        protected override object GetIndexValue(int index)
        {
            return 5 == index ? t6 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (5 == index)
            {
                t6 = (T6)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7>
               : MethodArgs<T1, T2, T3, T4, T5, T6>
    {
        protected T7 t7;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7 };

        protected override object GetIndexValue(int index)
        {
            return 6 == index ? t7 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (6 == index)
            {
                t7 = (T7)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7>
    {
        protected T8 t8;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8 };

        protected override object GetIndexValue(int index)
        {
            return 7 == index ? t8 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (7 == index)
            {
                t8 = (T8)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8>
    {
        protected T9 t9;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9 };

        protected override object GetIndexValue(int index)
        {
            return 8 == index ? t9 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (8 == index)
            {
                t9 = (T9)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9>
    {
        protected T10 t10;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 };

        protected override object GetIndexValue(int index)
        {
            return 9 == index ? t10 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (9 == index)
            {
                t10 = (T10)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
    {
        protected T11 t11;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 };

        protected override object GetIndexValue(int index)
        {
            return 10 == index ? t11 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (10 == index)
            {
                t11 = (T11)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
    {
        protected T12 t12;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 };

        protected override object GetIndexValue(int index)
        {
            return 11 == index ? t12 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (11 == index)
            {
                t12 = (T12)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
    {
        protected T13 t13;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 };

        protected override object GetIndexValue(int index)
        {
            return 12 == index ? t13 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (12 == index)
            {
                t13 = (T13)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
    {
        protected T14 t14;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14 };

        protected override object GetIndexValue(int index)
        {
            return 13 == index ? t14 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (13 == index)
            {
                t14 = (T14)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
    {
        protected T15 t15;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 };

        protected override object GetIndexValue(int index)
        {
            return 14 == index ? t15 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (14 == index)
            {
                t15 = (T15)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
    {
        protected T16 t16;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 };

        protected override object GetIndexValue(int index)
        {
            return 15 == index ? t16 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (15 == index)
            {
                t16 = (T16)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
    {
        protected T17 t17;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 };

        protected override object GetIndexValue(int index)
        {
            return 16 == index ? t17 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (16 == index)
            {
                t17 = (T17)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>
    {
        protected T18 t18;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18 };

        protected override object GetIndexValue(int index)
        {
            return 17 == index ? t18 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (17 == index)
            {
                t18 = (T18)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; this.t18 = t18; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17, out T18 t18)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; t18 = this.t18; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>
    {
        protected T19 t19;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19 };

        protected override object GetIndexValue(int index)
        {
            return 18 == index ? t19 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (18 == index)
            {
                t19 = (T19)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; this.t18 = t18; this.t19 = t19; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17, out T18 t18, out T19 t19)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; t18 = this.t18; t19 = this.t19; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>
    {
        protected T20 t20;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20 };

        protected override object GetIndexValue(int index)
        {
            return 19 == index ? t20 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (19 == index)
            {
                t20 = (T20)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; this.t18 = t18; this.t19 = t19; this.t20 = t20; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17, out T18 t18, out T19 t19, out T20 t20)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; t18 = this.t18; t19 = this.t19; t20 = this.t20; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>
    {
        protected T21 t21;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21 };

        protected override object GetIndexValue(int index)
        {
            return 20 == index ? t21 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (20 == index)
            {
                t21 = (T21)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; this.t18 = t18; this.t19 = t19; this.t20 = t20; this.t21 = t21; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17, out T18 t18, out T19 t19, out T20 t20, out T21 t21)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; t18 = this.t18; t19 = this.t19; t20 = this.t20; t21 = this.t21; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>
    {
        protected T22 t22;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22 };

        protected override object GetIndexValue(int index)
        {
            return 21 == index ? t22 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (21 == index)
            {
                t22 = (T22)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21, T22 t22)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; this.t18 = t18; this.t19 = t19; this.t20 = t20; this.t21 = t21; this.t22 = t22; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17, out T18 t18, out T19 t19, out T20 t20, out T21 t21, out T22 t22)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; t18 = this.t18; t19 = this.t19; t20 = this.t20; t21 = this.t21; t22 = this.t22; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>
    {
        protected T23 t23;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23 };

        protected override object GetIndexValue(int index)
        {
            return 22 == index ? t23 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (22 == index)
            {
                t23 = (T23)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21, T22 t22, T23 t23)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; this.t18 = t18; this.t19 = t19; this.t20 = t20; this.t21 = t21; this.t22 = t22; this.t23 = t23; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17, out T18 t18, out T19 t19, out T20 t20, out T21 t21, out T22 t22, out T23 t23)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; t18 = this.t18; t19 = this.t19; t20 = this.t20; t21 = this.t21; t22 = this.t22; t23 = this.t23; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>
    {
        protected T24 t24;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24 };

        protected override object GetIndexValue(int index)
        {
            return 23 == index ? t24 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (23 == index)
            {
                t24 = (T24)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21, T22 t22, T23 t23, T24 t24)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; this.t18 = t18; this.t19 = t19; this.t20 = t20; this.t21 = t21; this.t22 = t22; this.t23 = t23; this.t24 = t24; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17, out T18 t18, out T19 t19, out T20 t20, out T21 t21, out T22 t22, out T23 t23, out T24 t24)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; t18 = this.t18; t19 = this.t19; t20 = this.t20; t21 = this.t21; t22 = this.t22; t23 = this.t23; t24 = this.t24; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>
    {
        protected T25 t25;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25 };

        protected override object GetIndexValue(int index)
        {
            return 24 == index ? t25 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (24 == index)
            {
                t25 = (T25)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21, T22 t22, T23 t23, T24 t24, T25 t25)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; this.t18 = t18; this.t19 = t19; this.t20 = t20; this.t21 = t21; this.t22 = t22; this.t23 = t23; this.t24 = t24; this.t25 = t25; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17, out T18 t18, out T19 t19, out T20 t20, out T21 t21, out T22 t22, out T23 t23, out T24 t24, out T25 t25)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; t18 = this.t18; t19 = this.t19; t20 = this.t20; t21 = this.t21; t22 = this.t22; t23 = this.t23; t24 = this.t24; t25 = this.t25; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>
    {
        protected T26 t26;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26 };

        protected override object GetIndexValue(int index)
        {
            return 25 == index ? t26 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (25 == index)
            {
                t26 = (T26)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21, T22 t22, T23 t23, T24 t24, T25 t25, T26 t26)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; this.t18 = t18; this.t19 = t19; this.t20 = t20; this.t21 = t21; this.t22 = t22; this.t23 = t23; this.t24 = t24; this.t25 = t25; this.t26 = t26; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17, out T18 t18, out T19 t19, out T20 t20, out T21 t21, out T22 t22, out T23 t23, out T24 t24, out T25 t25, out T26 t26)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; t18 = this.t18; t19 = this.t19; t20 = this.t20; t21 = this.t21; t22 = this.t22; t23 = this.t23; t24 = this.t24; t25 = this.t25; t26 = this.t26; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26>
    {
        protected T27 t27;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27 };

        protected override object GetIndexValue(int index)
        {
            return 26 == index ? t27 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (26 == index)
            {
                t27 = (T27)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21, T22 t22, T23 t23, T24 t24, T25 t25, T26 t26, T27 t27)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; this.t18 = t18; this.t19 = t19; this.t20 = t20; this.t21 = t21; this.t22 = t22; this.t23 = t23; this.t24 = t24; this.t25 = t25; this.t26 = t26; this.t27 = t27; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17, out T18 t18, out T19 t19, out T20 t20, out T21 t21, out T22 t22, out T23 t23, out T24 t24, out T25 t25, out T26 t26, out T27 t27)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; t18 = this.t18; t19 = this.t19; t20 = this.t20; t21 = this.t21; t22 = this.t22; t23 = this.t23; t24 = this.t24; t25 = this.t25; t26 = this.t26; t27 = this.t27; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27>
    {
        protected T28 t28;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28 };

        protected override object GetIndexValue(int index)
        {
            return 27 == index ? t28 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (27 == index)
            {
                t28 = (T28)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21, T22 t22, T23 t23, T24 t24, T25 t25, T26 t26, T27 t27, T28 t28)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; this.t18 = t18; this.t19 = t19; this.t20 = t20; this.t21 = t21; this.t22 = t22; this.t23 = t23; this.t24 = t24; this.t25 = t25; this.t26 = t26; this.t27 = t27; this.t28 = t28; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17, out T18 t18, out T19 t19, out T20 t20, out T21 t21, out T22 t22, out T23 t23, out T24 t24, out T25 t25, out T26 t26, out T27 t27, out T28 t28)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; t18 = this.t18; t19 = this.t19; t20 = this.t20; t21 = this.t21; t22 = this.t22; t23 = this.t23; t24 = this.t24; t25 = this.t25; t26 = this.t26; t27 = this.t27; t28 = this.t28; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28>
    {
        protected T29 t29;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29 };

        protected override object GetIndexValue(int index)
        {
            return 28 == index ? t29 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (28 == index)
            {
                t29 = (T29)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21, T22 t22, T23 t23, T24 t24, T25 t25, T26 t26, T27 t27, T28 t28, T29 t29)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; this.t18 = t18; this.t19 = t19; this.t20 = t20; this.t21 = t21; this.t22 = t22; this.t23 = t23; this.t24 = t24; this.t25 = t25; this.t26 = t26; this.t27 = t27; this.t28 = t28; this.t29 = t29; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17, out T18 t18, out T19 t19, out T20 t20, out T21 t21, out T22 t22, out T23 t23, out T24 t24, out T25 t25, out T26 t26, out T27 t27, out T28 t28, out T29 t29)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; t18 = this.t18; t19 = this.t19; t20 = this.t20; t21 = this.t21; t22 = this.t22; t23 = this.t23; t24 = this.t24; t25 = this.t25; t26 = this.t26; t27 = this.t27; t28 = this.t28; t29 = this.t29; }
    }
    public class MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30>
               : MethodArgs<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29>
    {
        protected T30 t30;

        public MethodArgs(Lazy<AopParamInfo> aopParam, object sender) : base(aopParam, sender) { }

        public override object[] ParamValues => new object[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30 };

        protected override object GetIndexValue(int index)
        {
            return 29 == index ? t30 : base.GetIndexValue(index);
        }

        protected override void SetIndexValue(int index, object value)
        {
            if (29 == index)
            {
                t30 = (T30)value;
                return;
            }
            base.SetIndexValue(index, value);
        }

        public void SetValue(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21, T22 t22, T23 t23, T24 t24, T25 t25, T26 t26, T27 t27, T28 t28, T29 t29, T30 t30)
        { this.t1 = t1; this.t2 = t2; this.t3 = t3; this.t4 = t4; this.t5 = t5; this.t6 = t6; this.t7 = t7; this.t8 = t8; this.t9 = t9; this.t10 = t10; this.t11 = t11; this.t12 = t12; this.t13 = t13; this.t14 = t14; this.t15 = t15; this.t16 = t16; this.t17 = t17; this.t18 = t18; this.t19 = t19; this.t20 = t20; this.t21 = t21; this.t22 = t22; this.t23 = t23; this.t24 = t24; this.t25 = t25; this.t26 = t26; this.t27 = t27; this.t28 = t28; this.t29 = t29; this.t30 = t30; }

        public void OutValue(out T1 t1, out T2 t2, out T3 t3, out T4 t4, out T5 t5, out T6 t6, out T7 t7, out T8 t8, out T9 t9, out T10 t10, out T11 t11, out T12 t12, out T13 t13, out T14 t14, out T15 t15, out T16 t16, out T17 t17, out T18 t18, out T19 t19, out T20 t20, out T21 t21, out T22 t22, out T23 t23, out T24 t24, out T25 t25, out T26 t26, out T27 t27, out T28 t28, out T29 t29, out T30 t30)
        { t1 = this.t1; t2 = this.t2; t3 = this.t3; t4 = this.t4; t5 = this.t5; t6 = this.t6; t7 = this.t7; t8 = this.t8; t9 = this.t9; t10 = this.t10; t11 = this.t11; t12 = this.t12; t13 = this.t13; t14 = this.t14; t15 = this.t15; t16 = this.t16; t17 = this.t17; t18 = this.t18; t19 = this.t19; t20 = this.t20; t21 = this.t21; t22 = this.t22; t23 = this.t23; t24 = this.t24; t25 = this.t25; t26 = this.t26; t27 = this.t27; t28 = this.t28; t29 = this.t29; t30 = this.t30; }
    }
}

